package cn.com.jinhao.provider.business.service;


import cn.com.jinhao.provider.business.entity.FlowCount;
import cn.com.jinhao.provider.business.entity.FlowInfo;

import java.util.List;

/**
 * HotLine
 * <p>Description: </p>
 *
 * @author ShaneMew
 * @version 1.0
 * @date 2020/02/17
 * @since 2020/02/17
 */


public interface FlowInfoService {
    /**
     * 已受理工单数量
     *
     * @param deptCode 部门编码
     * @return int
     */
    int selectCount(String deptCode);

    /**
     * 查询事件流程概览
     *
     * @param deptCode 部门编码
     * @return FlowCount    {@link FlowCount}
     */
    List<FlowCount> queryInfoCountByDeptCode(String deptCode);

    /**
     * 查询当前部门下的流程信息
     *
     * @param deptCode   部门编码
     * @param statusCode 状态编码
     * @return FlowInfo {@link FlowInfo}
     */
    List<FlowInfo> queryInfoDetailByDeptCodeAndStatusCode(String deptCode, String statusCode);

    /**
     * 新增流程信息
     *
     * @param flowInfo 流程信息   {@link FlowInfo}
     * @return int
     */
    int add(FlowInfo flowInfo);

    /**
     * 更新流程信息
     *
     * @param flowInfo 流程信息   {@link FlowInfo}
     * @return int
     */
    int update(FlowInfo flowInfo);

    /**
     * 批量新增流程信息
     *
     * @param flowInfos 流程信息列表
     * @return int
     */
    int batchInsert(List<FlowInfo> flowInfos);

    /**
     * 根据事件编码查询流程信息（仅在派单未生成的时候使用）
     *
     * @param eventCode 事件编码
     * @return FlowInfo {@link FlowInfo}
     */
    FlowInfo queryByEventCode(String eventCode);

    /**
     * 根据事件编码、部门编码、派单编码查询流程信息（派单后使用）
     *
     * @param deptCode     部门编码
     * @param dispatchCode 派单编码
     * @param eventCode    事件编码
     * @return FlowInfo {@link FlowInfo}
     */
    FlowInfo findByEventCodeDeptCodeDispatchCode(String deptCode, String dispatchCode, String eventCode);
}
